const { defineConfig } = require('@vue/cli-service')
const GLOBAL_CONFIG = require('./config/global.js')
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')

// 🔧 API配置 - 从全局配置文件获取
const API_CONFIG = {
  BASE_URL: GLOBAL_CONFIG.API_BASE_URL
}

console.log('🔧 [Vue Config] 使用API地址:', API_CONFIG.BASE_URL)

module.exports = defineConfig({
  transpileDependencies: true,
  publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
  configureWebpack: {
    devtool: process.env.NODE_ENV === 'production' ? false : 'source-map',
    plugins: [
      new MonacoWebpackPlugin({
        // 包含的语言
        languages: ['javascript', 'typescript', 'json', 'html', 'css'],
        // 包含的功能
        features: ['coreCommands', 'find']
      }),
      // 生产环境移除console.log
      ...(process.env.NODE_ENV === 'production' ? [
        new (require('webpack')).DefinePlugin({
          'process.env.NODE_ENV': JSON.stringify('production')
        })
      ] : [])
    ],
    // 生产环境优化
    optimization: process.env.NODE_ENV === 'production' ? {
      minimize: true,
      minimizer: [
        new (require('terser-webpack-plugin'))({
          terserOptions: {
            compress: {
              drop_console: true, // 移除所有console语句
              drop_debugger: true, // 移除所有debugger语句
              pure_funcs: ['console.log', 'console.info', 'console.debug'] // 移除指定的纯函数调用
            }
          }
        })
      ]
    } : {}
  },
  devServer: {
    port: GLOBAL_CONFIG.DEV_SERVER.port, // 使用全局配置的端口
    open: GLOBAL_CONFIG.DEV_SERVER.open, // 使用全局配置的自动打开设置
    proxy: {
      '/api': {
        target: API_CONFIG.BASE_URL, // 使用统一配置
        changeOrigin: true,
        secure: false,
        pathRewrite: {
          '^/api': ''
        },
        logLevel: 'debug',
        timeout: 30000, // 代理超时时间 - 30秒
        proxyTimeout: 30000, // 代理响应超时时间 - 30秒
        // 添加认证头
        onProxyReq: function(proxyReq, req, res) {
          // 从cookie或localStorage获取token并添加到请求头
          const token = req.headers.authorization || req.headers.Authorization;
          if (token) {
            proxyReq.setHeader('Authorization', token);
          }
          console.log('🔧 [Proxy] 转发请求到:', API_CONFIG.BASE_URL + req.url.replace('/api', ''));
        },
        onProxyRes: function(proxyRes, req, res) {
          console.log('✅ [Proxy] 收到响应:', proxyRes.statusCode);
        },
        onError: function(err, req, res) {
          console.error('❌ [Proxy] 代理错误:', err.message);
        }
      }
    }
  }
})
